CSS

Содержание:

CSS

Заголовок Жирный, крупный и по центру
Абзац Отступы и переносы строк
Список Маркеры и переносы строк

Каскадные таблицы стилей - формальный язык описания внешнего документа, написанного с использованием языка разметки.

Tag font deprecated

<font face="verdana" color="green">some text</font>

Элемент style

Отвечает за стилистическое оформление страницы(шрифт, размер шрифта, цвет…) и находится в <head> ().

Включение таблиц стилей в документ

                                                ↓ П
                                                ↓
<link rel="stylesheet" href="main.css"          ↓ Р
type="text/css">                                ↓
                                                ↓ И
Где main.css:                                   ↓
                                                ↓ О
h1 { font-size: 40px;                           ↓
font-family: Verdana, sans-serif;               ↓ Р
color: #333366; }                               ↓
p { font-size: 14px;                            ↓ И
text-align: center;}                            ↓
                                                ↓ Т
<h1 style="border-width: 1; border: solid;      ↓
text-align: center"> Заголовок </h1>            ↓ Е
                                                ↓
                                                ↓ Т

Типы устройств

<link rel="stylesheet" href="sc.css" media="screen">
<link rel="stylesheet" href="prn.css" media="print">

<style media="screen">
h1 { color: #333366; }
</style>
Значение атрибута media  
aural синтезатор речи
print принтер
projection проектор
screen графический дисплей
tv телевизор

CSS1 и СSS2: исторический обзор

Возможности CSS1

Возможности CSS2

CSS3 - набор стандартов

1

Синтаксис CSS

Табллица стилей состоит из операторов: директив и правил

@import - включает другую таблицу стилей в текущую.

@media - Задает имена устройств отображения.

@import "mystyle.css"
@media print{
    body {font-size: 10pt}
}

Правило состоит из селектора и деклараций:

h1 { font-size: 120%; /*относительный размер*/
font-family: Verdana;
color: #333366; } 

Директива @import

<head>
 <title>Импортирование</title>
 <style>
@import url(mystyle.css)
/*далее следуют правила... */
 </style>
</head>

Если правил несколько - то побеждает последнее описанное

@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;

Директива @media

Директива @media создает таблицы стилей, зависящие от устройства отображения.

@media print {
 body { font-size: 20pх }
}
@media screen {
 body { font-size: 12pt }
}
@media print, screen{
 body {line-height: 1.2pt }
} 

Типы данных CSS

Примеры

b- жирный

i - наклонный

h1 { margin: 0.5em }
h2 { word-spacing: 0.5in }
h3 { font-size: 12px }
body { background:
url(http://mysite.com/bg.gif) }
em { color: red }
body:after {content: "Конец документа" }

Иерархия элементов в html документе

<html>
<head>
 <title>Тег STYLE</title>
 </head>
<body>
 <h1>Hello, world!</h1>
 <p>Текст абзаца зеленого цвета</p>
</body>
</html>
                          HTML
                           |
                        --- ---
                        |      |
                       head   body
                        |       |
                      title  --- ---
                            |      |
                            h1     p

Селекторы CSS

Базовые селекторы: примеры

h1 {font-size: 120%; }
* {font-size: 120%; }
h1, h2, h3 {font-size: 120%; }

Селекторы классов

<style>
	p.note {font-size: 80%;}
	p.cite {text-align: center;}
</style>

<p class=”note”> - Для HTML-документов CSS поддерживает селекторы классов, которые основаны на использовании атрибута class и имеют вид element.class

<p class=”site”*> - If an element has multiple class attributes, their values must be concatenated with spaces between the values before searching for the class… © w3c.org

.info {font-style: italic}

<p class=”info”> - Селектор класса может не содержать названия элемента. Такое правило относится ко всем элементам, имеющим атрибут class со значением “warning”

<div class=”info”> - Селектор класса, не содержащий имени элемента, следует понимать как селектор *.class, в котором универсальный селектор * опущен

p.warning.red { font-style: italic }

<p class=”warning red blue”> - Применимо

<p class=”warning blue”> - Неприменимо

Селекторы идентификаторов

<style>
	#note {font-size: 80%;}
</style>

<p id=”note”> - Документы могут содержать элементы с атрибутами id, задающими уникальные идентификаторы этих элементов

<style>
	h1#info {font-size: 80%;}
</style>

Селекторы атрибутов

<style>
h1[title] {color: blue;}
p[text-align="right"] {color: blue;}
a[href^="http"]:after {content:attr(href)}
a[href$=".pdf"]:after{content: url(pdf-con.png)}
a[href*="w3c"] {text-decoration: none;}
p[class~="info"] {color: red;}
*[lang|="en"] {color: blue;}
</style>

Полный список и примеры см. http://htmlbook.ru/samcss/selektory-atributov

Пример

style>
 a[target="_blank"]{
 background:url(ico.png) 0 6px no-repeat;
 padding-left: 15px;}
</style>
<a href="1.html">Обычная ссылка</a>
<a href="2.html" target="_blank">Ссылка в
новом окне</a>

2

Селекторы потомков и соседей

<style>
p span {color: blue;}
body > p {text-indent: 3em;}
div ol>li p {line-height: 1.5;}
H1 + H2 { margin-top: -5mm;}
H1.opener + H2 { margin-top: -5mm;}
</style>

Псевдоклассы

http://htmlbook.ru/css/cat/pseudoclass

<style>
DIV > P:first-child {text-indent: 3em;}
</style>

\<div>

<p> - Псевдокласс: first-child соответствует элементу, который является первым ребенком данного элемента </p>

<p> - Следующий абзац не написан с красной строки </p>

</div>

Наследование

Наследование - перенос правил форматирования для элементов, находящихся внутри других.

<head>
 <title>Наследование</title>
 <style>
 h1 { color: red;}
 </style>
</head>
<body>
 <h1>
Этот заголовок <em>очень важен</em>!
 </h1>
</body>

Пример

<head>
 <title>Наследование</title>
<style>
 table { color: red;
background: #333;
border: 2px solid red;}
 </style>
</head>
<body>
 <table cellpadding="4" cellspacing="0">
 <tr>
<td>Ячейка 1</td><td>Ячейка 2</td>
 </tr>
 <tr>
<td>Ячейка 3</td><td>Ячейка 4</td>
 </tr>
 </table>
</body>

3

Таблицы стилей могут иметь три источника происхождения: автор, пользователь(сам может написать таблицу стилей) и обозреватель.

  1. Выбираются декларации, которые соответствуют данному устройству отображения; из них выбираются правила, чьи селекторы соответствуют данному элементу.
  2. Декларации сортируются по весу их источника.
  3. Производится вторичная сортировка по специфичности селектора.
  4. Если два правила имеют одинаковый вес и специфичность, то применяется последнее из них. При этом правила импортированных таблиц располагаются до всех правил импортирующей таблицы.

Директива !important

Атрибут !important позволяет правилам пользовательской таблицы стилей перекрывать авторские

Стиль автора Стиль пользователя Результат
!important !important Пользовательский
!important - Авторский
- !important Пользовательский
- - Авторский
*/ Из таблицы стилей пользователя */
P { text-indent: 1.5em !important }
P { font: 12pt sans-serif !important }
P { font-size: 24pt }

*/ Из таблицы стилей автора */
font: font-style | font-size | font-family и другие

Специфичность селектора

Порядок вычисления специфичности селектора :

a) подсчитать количество атрибутов id в селекторе;
b) подсчитать количество атрибутов class в селекторе (псевдоклассы учитываются);
c) подсчитать количество названий тегов HTML в селекторе.

Эти три числа записываются подряд, чтобы получить число из трех цифр (возможно, придется привести числа a, b и c к системе счисления с большим основанием, чтобы каждое из них выражалось одной цифрой). Результатом и будет специфичность селектора (чем она выше, тем селектор специфичней).

Селектор Вес Специфичность
* a=0 b=0 c=0 0
li a=0 b=0 c=1 1
li:first-line a=0 b=0 c=2 2
ul li a=0 b=0 c=2 2
ul ol+li a=0 b=0 c=3 3
ul lo.red a=0 b=1 c=2 12
li.red.level a=0 b=2 c=1 21
#t34 a=1 b=0 c=0 100
#cont #wrap a=2 b=0 c=0 200

Вычисление значения свойств

После того, как обозреватель проанализировал документ и построил дерево документа, для каждого элемента дерева вычисляется значение каждого из его свойств, применимых к текущему устройству отображения.

  1. Значение определяется из спецификации(специфицированное значение)

    а) Если каскад возвращает значение, то используется оно;

    b) Если свойство является наследуемым, от используется соответствующее значение отцовского элемента;

    c) Иначе используется начальное значение свойства.

  2. Значение при необходимости преобразуется к абсолютному значению (вычисленное значение).
  3. Значение преобразуется с учетом ограничений контекста(фактическое значение).